package com.shujia.scala


object Demo8Fun {
  def main(args: Array[String]): Unit = {


    /**
      * 以函数作为返回值
      *
      * String => String   函数作为返回值的类型
      */

    def fun(name: String): String => String = {

      def f(s: String): String = {
        name + "pro" + s
      }

      f
    }

    val f1 = fun("数加")
    val r = f1("学院")
    println(r)

    println(fun("张三")("李四"))

    //简写   柯力化
    def fun1(name: String)(s: String): String = {
      name + "pro" + s
    }

    val s2 = fun1("张三")("李四")
    println(s2)


    /**
      * 篇应用函数
      *
      */

    def fun2(name: String, s: String): String = {
      name + "pro" + s
    }

    fun2("张三", "李四")
    fun2("张三", "王五")
    fun2("张三", "123")

    //第一次调用如果有的参数没有指定可以使用_代替  函数还没有完全调用
    val fun3 = fun2("张三", _: String)

    //返回的函数可以被多次调用
    fun3("李四")
    fun3("李四")
    fun3("李四")


  }

}
